Vacuous Truth
Vacuous Truth(空虚な真)
from:
「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ
「メールのすべての添付ファイルが安全であれば受信箱に入れる」という処理において、添付ファイルのないメールはどうすべきかを考えれば、自然と答えがイメージしやすい
・論理的にはtrue一択。false派は論理を勉強してほしい
・論理で判断できる項目でドキュメントを参照する手間を増やすのは良くないので、状況に拠らないで欲しい
・多くの環境では「全員が論理的に考えられる」と思わない方が良いので、ドキュメントやコメントは気を使うべき
空のコレクション、例えば整数の空の配列に「すべての要素が0以上(>0)である」判定をしたときにはtrueが返ってきてほしいという論理学的な性質がある
論理学の言葉だと以下のやつ
「偽の前提からの含意は常に真」
含意は$ P \to Q
記号を使ったものだと以下のようなもの。
$ P が偽なら、「もし$ P なら$ Q である」は常に真である。
$ \begin{array}{c|c|c} P & Q & P→Q \\ \hline \colorbox{#fcc}{T} & \colorbox{#fcc}{T} & \colorbox{#fcc}{T} \\ \colorbox{#fcc}{T} & F & F \\ F & \colorbox{#fcc}{T} & \colorbox{#fcc}{T} \\ F & F & \colorbox{#fcc}{T} \end{array}
真理値表の3行目の(P, Q)が(F, T)の場合のことを言っている
確認用
Q. Vacuous Truthとは
関連
参考
大堀 淳. 帰納法による証明と帰納原理,「型推論」特別講義 第3回 ,プログラミング言語のモデル第4回(プログラミング言語の基礎理論シリーズ) . 2023/01/22 https://www.youtube.com/watch?v=j_CsQCmj4GY
メモ
code:memo.rb
p [].all? {|v| v > 0 } # => true